package cn.jiakeyun.umeng_vertify

import android.content.Context
import com.umeng.commonsdk.UMConfigure
import com.umeng.umverify.view.UMAuthUIConfig

/**
 * 总体配置工具
 * */
object UVerifyManagerConfig {

    var delete: JKUMAbstractPnsViewDelegate? = null //view 操作代理类
    var intLayoutId: Int? = null //view 资源文件（storyboard）
    var uiConfigure: UMAuthUIConfig? = null //ui参数配置
    var nativeViewClick2FlutterListener: NativeViewClick2FlutterListener? = null
    var uMVerityManager: UVerifyManager? = null
    var loginListener: UVerifyManager.LoginListener? = null

    var checkBoxCheckListener: CheckBoxClick? = null

    /**
     * 把管理器弄进去保证外部可以调用
     * */
    fun initCheckBoxCheckListener(checkBoxCheckListener: CheckBoxClick): UVerifyManagerConfig {
        this.checkBoxCheckListener = checkBoxCheckListener
        return this
    }

    /**
     * 把管理器弄进去保证外部可以调用
     * */
    fun initLoginListener(loginListener: UVerifyManager.LoginListener): UVerifyManagerConfig {
        this.loginListener = loginListener
        return this
    }

    /**
     * 把管理器弄进去保证外部可以调用
     * */
    fun initUMVerityManager(uMVerityManager: UVerifyManager): UVerifyManagerConfig {
        this.uMVerityManager = uMVerityManager
        return this
    }

    /**
     * 设置 view 操作代理类
     * @param delete 代理类
     * @return 当前类支持链式调用
     * */
    fun <T : JKUMAbstractPnsViewDelegate> initDelete(delete: T): UVerifyManagerConfig {
        this.delete = delete
        return this
    }

    /**
     * 设置UI资源
     * @param id 资源id
     * @return 当前类支持链式调用
     * */
    fun initLayoutId(id: Int): UVerifyManagerConfig {
        this.intLayoutId = id
        return this
    }

    /**
     * 设置UI配置文件
     * @param uiConfig 配置类
     * @return 当前类支持链式调用
     * */
    fun initUiConfigure(uiConfig: UMAuthUIConfig): UVerifyManagerConfig {
        this.uiConfigure = uiConfig
        return this
    }


    /**
     * 注册组件
     * @param appContext 上下文
     * @param key 注册key值
     * @param channelName 渠道名称
     * */
    fun initUMengVerify(
        appContext: Context,
        key: String,
        channelName: String
    ): UVerifyManagerConfig {
        UMConfigure.init(appContext, key, channelName, UMConfigure.DEVICE_TYPE_PHONE, "")
        return this
    }

    interface NativeViewClick2FlutterListener {
        fun click(methodName: String)
    }

    interface CheckBoxClick {
        fun check(check: Boolean)
    }
}